<!DOCTYPE html>
<html lang="en-us">
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    
<meta charset="UTF-8">
<title>What’s new in 7.7 | Elasticsearch Guide [7.7] | Elastic</title>
<link rel="home" href="index.html" title="Elasticsearch Guide [7.7]">
<link rel="up" href="index.html" title="Elasticsearch Guide [7.7]">
<link rel="prev" href="scalability.html" title="Scalability and resilience: clusters, nodes, and shards">
<link rel="next" href="getting-started.html" title="Getting started with Elasticsearch">
<meta name="DC.type" content="Learn/Docs/Elasticsearch/Reference/7.7">
<meta name="DC.subject" content="Elasticsearch">
<meta name="DC.identifier" content="7.7">
<meta name="robots" content="noindex,nofollow">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://cdn.optimizely.com/js/18132920325.js"></script>
    <link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
    <link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
    <link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
    <link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
    <link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
    <link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
    <link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
    <link rel="icon" type="image/png" href="/favicon-32x32.png" sizes="32x32">
    <link rel="icon" type="image/png" href="/android-chrome-192x192.png" sizes="192x192">
    <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96">
    <link rel="icon" type="image/png" href="/favicon-16x16.png" sizes="16x16">
    <link rel="manifest" href="/manifest.json">
    <meta name="apple-mobile-web-app-title" content="Elastic">
    <meta name="application-name" content="Elastic">
    <meta name="msapplication-TileColor" content="#ffffff">
    <meta name="msapplication-TileImage" content="/mstile-144x144.png">
    <meta name="theme-color" content="#ffffff">
    <meta name="naver-site-verification" content="936882c1853b701b3cef3721758d80535413dbfd">
    <meta name="yandex-verification" content="d8a47e95d0972434">
    <meta name="localized" content="true">
    <meta name="st:robots" content="follow,index">
    <meta property="og:image" content="https://www.elastic.co/static/images/elastic-logo-200.png">
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
    <link rel="icon" href="/favicon.ico" type="image/x-icon">
    <link rel="apple-touch-icon-precomposed" sizes="64x64" href="/favicon_64x64_16bit.png">
    <link rel="apple-touch-icon-precomposed" sizes="32x32" href="/favicon_32x32.png">
    <link rel="apple-touch-icon-precomposed" sizes="16x16" href="/favicon_16x16.png">
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
    <link rel="stylesheet" type="text/css" href="/guide/static/styles.css">
  </head>

  <!--© 2015-2021 Elasticsearch B.V. Copying, publishing and/or distributing without written permission is strictly prohibited.-->

  <body>
    <!-- Google Tag Manager -->
    <script>dataLayer = [];</script><noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-58RLH5" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-58RLH5');</script>
    <!-- End Google Tag Manager -->

    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-12395217-16"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
      gtag('config', 'UA-12395217-16');
    </script>

    <!--BEGIN QUALTRICS WEBSITE FEEDBACK SNIPPET-->
    <script type="text/javascript">
      (function(){var g=function(e,h,f,g){
      this.get=function(a){for(var a=a+"=",c=document.cookie.split(";"),b=0,e=c.length;b<e;b++){for(var d=c[b];" "==d.charAt(0);)d=d.substring(1,d.length);if(0==d.indexOf(a))return d.substring(a.length,d.length)}return null};
      this.set=function(a,c){var b="",b=new Date;b.setTime(b.getTime()+6048E5);b="; expires="+b.toGMTString();document.cookie=a+"="+c+b+"; path=/; "};
      this.check=function(){var a=this.get(f);if(a)a=a.split(":");else if(100!=e)"v"==h&&(e=Math.random()>=e/100?0:100),a=[h,e,0],this.set(f,a.join(":"));else return!0;var c=a[1];if(100==c)return!0;switch(a[0]){case "v":return!1;case "r":return c=a[2]%Math.floor(100/c),a[2]++,this.set(f,a.join(":")),!c}return!0};
      this.go=function(){if(this.check()){var a=document.createElement("script");a.type="text/javascript";a.src=g;document.body&&document.body.appendChild(a)}};
      this.start=function(){var a=this;window.addEventListener?window.addEventListener("load",function(){a.go()},!1):window.attachEvent&&window.attachEvent("onload",function(){a.go()})}};
      try{(new g(100,"r","QSI_S_ZN_emkP0oSe9Qrn7kF","https://znemkp0ose9qrn7kf-elastic.siteintercept.qualtrics.com/WRSiteInterceptEngine/?Q_ZID=ZN_emkP0oSe9Qrn7kF")).start()}catch(i){}})();
    </script><div id="ZN_emkP0oSe9Qrn7kF"><!--DO NOT REMOVE-CONTENTS PLACED HERE--></div>
    <!--END WEBSITE FEEDBACK SNIPPET-->

    <div id="elastic-nav" style="display:none;"></div>
    <script src="https://www.elastic.co/elastic-nav.js"></script>

    <!-- Subnav -->
    <div>
      <div>
        <div class="tertiary-nav d-none d-md-block">
          <div class="container">
            <div class="p-t-b-15 d-flex justify-content-between nav-container">
              <div class="breadcrum-wrapper"><span><a href="/guide/" style="font-size: 14px; font-weight: 600; color: #000;">Docs</a></span></div>
            </div>
          </div>
        </div>
      </div>
    </div>

    <div class="main-container">
      <section id="content">
        <div class="content-wrapper">

          <section id="guide" lang="en">
            <div class="container">
              <div class="row">
                <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                  <!-- start body -->
                  <div class="page_header">
<strong>IMPORTANT</strong>: No additional bug fixes or documentation updates
will be released for this version. For the latest information, see the
<a href="../current/index.html">current release documentation</a>.
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch Guide [7.7]</a></span>
»
<span class="breadcrumb-node">What’s new in 7.7</span>
</div>
<div class="navheader">
<span class="prev">
<a href="scalability.html">« Scalability and resilience: clusters, nodes, and shards</a>
</span>
<span class="next">
<a href="getting-started.html">Getting started with Elasticsearch »</a>
</span>
</div>
<div class="chapter">
<div class="titlepage"><div><div>
<h1 class="title">
<a id="release-highlights"></a>What’s new in 7.7<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/release-notes/highlights.asciidoc">edit</a>
</h1>
</div></div></div>
<p>Here are the highlights of what’s new and improved in Elasticsearch 7.7!
For detailed information about this release, see the
<a class="xref" href="release-notes-7.7.1.html" title="Elasticsearch version 7.7.1">Release notes </a>  and
<a class="xref" href="breaking-changes-7.7.html" title="Breaking changes in 7.7">Breaking changes</a>.</p>
<p>Other versions:
<a href="/guide/en/elasticsearch/reference/7.6/release-highlights-7.6.0.html" class="ulink" target="_top">7.6</a>
| <a href="/guide/en/elasticsearch/reference/7.5/release-highlights-7.5.0.html" class="ulink" target="_top">7.5</a>
| <a href="/guide/en/elasticsearch/reference/7.4/release-highlights-7.4.0.html" class="ulink" target="_top">7.4</a>
| <a href="/guide/en/elasticsearch/reference/7.3/release-highlights-7.3.0.html" class="ulink" target="_top">7.3</a>
| <a href="/guide/en/elasticsearch/reference/7.2/release-highlights-7.2.0.html" class="ulink" target="_top">7.2</a>
| <a href="/guide/en/elasticsearch/reference/7.1/release-highlights-7.1.0.html" class="ulink" target="_top">7.1</a>
| <a href="/guide/en/elasticsearch/reference/7.0/release-highlights-7.0.0.html" class="ulink" target="_top">7.0</a></p>
<h3>
<a id="_fixed_index_corruption_on_shrunk_indices"></a>Fixed index corruption on shrunk indices<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/release-notes/highlights.asciidoc">edit</a>
</h3>
<p>Applying deletes or updates on an index after it had been shrunk would likely
corrupt the index. We advise users of Elasticsearch 6.x who opt in for soft
deletes on some of their indices and all users of Elasticsearch 7.x to upgrade
to 7.7 as soon as possible to no longer be subject to this corruption bug. In
case upgrading in the near future is not an option, we recommend to completely
stop using <code class="literal">_shrink</code> on read-write indices and to do a force-merge right after
shrinking on read-only indices, which significantly reduces the likeliness of
being affected by this bug in case deletes or updates get applied by mistake.
This bug is fixed as of Elasticsearch 7.7.0. Low-level details can be found on the
<a href="https://issues.apache.org/jira/browse/LUCENE-9300" class="ulink" target="_top">corresponding issue</a>.</p>
<h3>
<a id="_significant_reduction_of_heap_usage_of_segments"></a>Significant reduction of heap usage of segments<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/release-notes/highlights.asciidoc">edit</a>
</h3>
<p>This release of Elasticsearch significantly reduces the amount of heap memory
that is needed to keep Lucene segments open. In addition to helping with cluster
stability, this helps reduce costs by storing much more data per node before
hitting memory limits.</p>
<h3>
<a id="_transforms_now_in_ga"></a>Transforms – now in GA!<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/release-notes/highlights.asciidoc">edit</a>
</h3>
<p>In 7.7, we move transforms from beta to general availability.</p>
<p><a href="/guide/en/elasticsearch/reference/7.7/transforms.html" class="ulink" target="_top">Transforms</a> enable you to pivot existing Elasticsearch
indices using group-by and aggregations into a destination feature index, which
provides opportunities for new insights and analytics. For example, you can use
transforms to pivot your data into entity-centric indices that summarize the
behavior of users or sessions or other entities in your data.</p>
<p>Transforms now include support for cross-cluster search. Allowing you to
create your destination feature index on a separate cluster from the source
indices.</p>
<p>Aggregation support has been expanded within transforms to include support for
<a href="/guide/en/elasticsearch/reference/7.7/search-aggregations-metrics-percentile-aggregation.html" class="ulink" target="_top">multi-value (percentiles)</a>
and
<a href="/guide/en/elasticsearch/reference/7.7/search-aggregations-bucket-filter-aggregation.html" class="ulink" target="_top">filter aggregations</a>.
We also optimized the performance of the
<a href="/guide/en/elasticsearch/reference/7.7/search-aggregations-bucket-datehistogram-aggregation.html" class="ulink" target="_top">date histogram aggregations</a>.</p>
<h3>
<a id="_introducing_multiclass_classification"></a>Introducing multiclass classification<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/release-notes/highlights.asciidoc">edit</a>
</h3>
<p><a href="/guide/en/machine-learning/7.7/dfa-classification.html" class="ulink" target="_top">Classification</a> using multiple classes
is now available in data frame analytics. Classification is a supervised machine learning
technique which has been already available as a binary process in the previous
release. Multiclass classification works well with up to 30 distinct
categories.</p>
<h3>
<a id="_feature_importance_at_inference_time"></a>Feature importance at inference time<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/release-notes/highlights.asciidoc">edit</a>
</h3>
<p>Feature importance now can be calculated at inference time. This value provides
further insight into the results of a classification or regression job and
therefore helps interpret these results.</p>
<h3>
<a id="_finer_memory_control_for_bucket_aggregations"></a>Finer memory control for bucket aggregations<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/release-notes/highlights.asciidoc">edit</a>
</h3>
<p>While building buckets, aggregations will now periodically check the
real-memory circuit breaker before continuing to allocate more buckets.  This
allows better responsivity to memory pressure and avoids <code class="literal">OutOfMemory</code>
situations due to allocating more buckets than the node can handle.</p>
<h3>
<a id="_a_new_way_of_searching_asynchronously"></a>A new way of searching: asynchronously<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/release-notes/highlights.asciidoc">edit</a>
</h3>
<p>You can now submit <a href="/guide/en/elasticsearch/reference/7.7/async-search-intro.html" class="ulink" target="_top">long-running searches</a> using
the new <a href="/guide/en/elasticsearch/reference/7.7/async-search.html" class="ulink" target="_top"><code class="literal">_async_search</code> API</a>. The new API accepts the
same parameters and request body as the <a href="/guide/en/elasticsearch/reference/7.7/search-search.html" class="ulink" target="_top">Search API</a>.
However, instead of blocking and returning the final response only when it’s
entirely finished, you can retrieve results from an async search as they become
available.</p>
<p>The request takes a parameter, <code class="literal">wait_for_completion</code>, which controls how long
the server will wait until it sends back a response. The first response
contains among others a search unique ID, a response version, an indication if
this response is partial or not, plus the usual metadata (shards involved,
number of hits etc) and potentially results. If the response is not complete
and final, the client can continue polling for results, issuing a new request
using the provided search ID. If new results are available, the returned
version is incremented and the new batch of results are returned. This can
continue until all the results are fetched.</p>
<p>Unless deleted earlier by the user, the asynchronous searches are kept alive
for a given interval. This defaults to 5 days and can be controlled by another
request parameter, <code class="literal">keep_alive</code>.</p>
<h3>
<a id="_password_protection_for_the_keystore"></a>Password protection for the keystore<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/release-notes/highlights.asciidoc">edit</a>
</h3>
<p>Elasticsearch uses a custom on-disk <a href="/guide/en/elasticsearch/reference/7.7/secure-settings.html" class="ulink" target="_top">keystore</a> for secure settings such as
passwords and SSL certificates. Up until now, this prevented users with
<a href="/guide/en/elasticsearch/reference/7.7/elasticsearch-keystore.html" class="ulink" target="_top">command-line access</a> from viewing secure files by listing commands, but nothing
prevented such users from changing values in the keystore, or removing values
from it. Furthermore, the values were only obfuscated by a hash; no
user-specific secret protected the secure settings.</p>
<p>This new feature changes all of that by adding password-protection to the
keystore. This is not be a breaking change: if a keystore has no password,
there won’t be any new prompts. A user must choose to password-protect their
keystore in order to benefit from the new behavior.</p>
<h3>
<a id="_a_new_aggregation_top_metrics"></a>A new aggregation: <code class="literal">top_metrics</code><a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/release-notes/highlights.asciidoc">edit</a>
</h3>
<p>The new <a href="/guide/en/elasticsearch/reference/7.7//search-aggregations-metrics-top-metrics.html" class="ulink" target="_top"><code class="literal">top_metrics</code> aggregation</a> "selects" a metric from a document according
to a criteria on a given, different field. That criteria is currently the
largest or smallest "sort" value. It is fairly similar to <code class="literal">top_hits</code> in spirit,
but because it is more limited, <code class="literal">top_metrics</code> uses less memory and
is often faster.</p>
<h3>
<a id="_query_speed_up_for_sorted_queries_on_time_based_indices"></a>Query speed-up for sorted queries on time-based indices<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/release-notes/highlights.asciidoc">edit</a>
</h3>
<p>We’ve optimized sorted, top-documents-only queries run on time-based indices.
The optimization stems from the fact that the ranges of (document) timestamps
in the shards don’t overlap. It is implemented by rewriting the shard search
requests based on the partial results already available from other shards, if
it can be determined that the query will not yield any result from the current
shard; i.e. we know in advance that the bottom entry of the (sorted) result set
after a partial merge is better than the values contained in this current
shard.</p>
<h3>
<a id="_a_new_aggregation_boxplot"></a>A new aggregation: <code class="literal">boxplot</code><a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/release-notes/highlights.asciidoc">edit</a>
</h3>
<p>The <a href="https://en.wikipedia.org/wiki/Interquartile_range" class="ulink" target="_top">interquartile range (IQR)</a> is a common robust measure of statistical dispersion.
Compared to the standard deviation, the IQR is less sensitive to outliers in
the data, with a breakdown point of 0.25. Along with the median, it is often
used in creating a box plot, a simple yet common way to summarize data and
identify potential outliers.</p>
<p>The new <a href="/guide/en/elasticsearch/reference/7.7/search-aggregations-metrics-boxplot-aggregation.html" class="ulink" target="_top"><code class="literal">boxplot</code>
aggregation</a> calculates the min, max, and medium as well as the first and third
quartiles of a given data set.</p>
<h3>
<a id="_aarch64_support"></a>AArch64 support<a class="edit_me edit_me_private" rel="nofollow" title="Editing on GitHub is available to Elastic" href="https://github.com/elastic/elasticsearch/edit/7.7/docs/reference/release-notes/highlights.asciidoc">edit</a>
</h3>
<p>Elasticsearch now provides AArch64 packaging, including bundling an AArch64 JDK
distribution. There are some restrictions in place, namely no machine learning support and
depending on underlying page sizes, class data sharing is disabled.</p>
</div>
<div class="navfooter">
<span class="prev">
<a href="scalability.html">« Scalability and resilience: clusters, nodes, and shards</a>
</span>
<span class="next">
<a href="getting-started.html">Getting started with Elasticsearch »</a>
</span>
</div>
</div>

                  <!-- end body -->
                </div>
                <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                  <div id="rtpcontainer" style="display: block;">
                    <div class="mktg-promo">
                      <h3>Most Popular</h3>
                      <ul class="icons">
                        <li class="icon-elasticsearch-white"><a href="https://www.elastic.co/webinars/getting-started-elasticsearch?baymax=default&amp;elektra=docs&amp;storm=top-video">Get Started with Elasticsearch: Video</a></li>
                        <li class="icon-kibana-white"><a href="https://www.elastic.co/webinars/getting-started-kibana?baymax=default&amp;elektra=docs&amp;storm=top-video">Intro to Kibana: Video</a></li>
                        <li class="icon-logstash-white"><a href="https://www.elastic.co/webinars/introduction-elk-stack?baymax=default&amp;elektra=docs&amp;storm=top-video">ELK for Logs &amp; Metrics: Video</a></li>
                      </ul>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </section>

        </div>


<div id="elastic-footer"></div>
<script src="https://www.elastic.co/elastic-footer.js"></script>
<!-- Footer Section end-->

      </section>
    </div>

<script src="/guide/static/jquery.js"></script>
<script type="text/javascript" src="/guide/static/docs.js"></script>
<script type="text/javascript">
  window.initial_state = {}</script>
  </body>
</html>
